#include <iostream>
#include <string>
#include <vector>

using namespace std;

class AbstractClass {
 public:
  void show() { cout << "我是" << GetName() << endl; }

 protected:
  virtual string GetName() = 0;
};

class Naruto : public AbstractClass {
 protected:
  virtual string GetName() { return "火影史上最帅的六代目----一鸣惊人naruto"; }
};

class OnePice : public AbstractClass {
 protected:
  virtual string GetName() { return "我是无恶不作的大海贼---路飞"; }
};

// 客户端
int main(int argc, char const *argv[])
{
    Naruto * man = new Naruto();
    man->show();

    OnePice* man2 = new OnePice();
    man2->show();
    
    return 0;
}
